#ifndef HEAP_H
#define HEAP_H
#include <stdio.h>
#include <stdbool.h>
#include <string.h>
#include <stdlib.h>

typedef int (*Comper)(const void*,const void*);

typedef struct Heap
{
	void** base;
	size_t cnt;
	size_t cal;
	Comper cmp;
}Heap;

// 创建空堆
Heap* create_heap(size_t cal,Comper cmp);

// 销毁堆
void destroy_heap(Heap* heap);

// 清空堆
void clear_heap(Heap* heap);


// 入堆
bool push_heap(Heap* heap,void* ptr);

// 出堆
bool pop_heap(Heap* heap);

// 判断堆是否空
bool empty_heap(Heap* heap);

// 判断堆是否满
bool full_heap(Heap* heap);

// 获取堆元素的数量
size_t size_heap(Heap* heap);

// 查看堆顶
void* top_heap(Heap* heap);

#endif//HEAP_H


